/**
 * Clase Cancion
 */
package musica;

import org.jdom.Element;

	/**
	 * @author Mauro
	 * 
	 */
	public class Cancion {

		private Duracion tiempoDeReproduccion;
		private Partitura partitura;
		private String titulo;
		
		
		/**
		 * @param tiempoDeReproduccion
		 */
		public Cancion(Duracion tiempoDeCancion, String unTitulo) {
			this.partitura = new Partitura(tiempoDeCancion);
			this.tiempoDeReproduccion = tiempoDeCancion;
			this.titulo = unTitulo;
		}
		
		/**
		 * @return the titulo
		 */
		public String getTitulo() {
			return titulo;
		}
		
		public Partitura cantarCancion(){
			return this.partitura;
		}
		
		public void escribirPartitura(Partitura miPartitura){
			this.partitura = miPartitura;
		}
		
		/**
		 * Carga de la cancion desde el archivo XML
		 * 
		 * @param element elemento XML
		 * @return Devuelve una instancia de Cancion con la Partitura obtenida del archivo XML
		 */
		public static Cancion cargarDesdeXML(Element element){
			
				//se obtienen los elementos de la Cancion (son dos)
				//uno es la Duracion
				Element elemenDuracion = (Element)element.getChildren().get(0);
				Duracion duracion = Duracion.cargarDesdeXML(elemenDuracion);
				//el otro es la Partitura
				Element elemenPartitura = (Element)element.getChildren().get(1);
				Partitura miPartitura = Partitura.cargarDesdeXML(elemenPartitura, duracion);
				
				Cancion nuevaCancion = new Cancion(duracion, element.getAttributeValue("titulo"));
				nuevaCancion.escribirPartitura(miPartitura);
				
				return nuevaCancion;
		}
}
